﻿using System;
using System.Windows;
using System.Windows.Controls;
using ExamSharedClasses.Commands;
using ExamSharedClasses;
using System.IO;

namespace ExamClient
{
    /// <summary>
    /// (k) Hier wird eine Klausur dargestellt und das Schreiben ermöglicht.
    /// Die Seite soll eine Kurzübersicht der Klausur anzeigen und die Möglichkeit
    /// eine Klasusur zu starten oder zu beenden anbieten
    /// </summary>
    public partial class ExamStartPage : Page {

        public ExamStartPage() {
            InitializeComponent();
            ViewExam cve = App.ExamPage.Cve;
            sendButton.IsEnabled = false; // noch nicht gleich lossenden können...

            ExamWithQuestions eq = (ExamWithQuestions)cve.Exam;
            textBox.Text = eq.ToMoreDetailedString();
        }

        private void writeButton_Click( object sender, RoutedEventArgs e ) {
            ViewExam cve = App.ExamPage.Cve;
            App.ServerConnection.Send( new Message( 200, "Beginne, eine Klausur zu schreiben..." ) );

            App.ExamPage.IsExamRunning = true;
            sendButton.IsEnabled = true;
            writeButton.IsEnabled = false;

            App.LoginBar.ExamMode( true );
            App.MenuBar.ExamMode( true );

            App.MainWindow.Topmost = true;
            App.MainWindow.ResizeMode = ResizeMode.NoResize;
            App.MainWindow.WindowState = WindowState.Maximized;
            App.MainWindow.WindowStyle = WindowStyle.None;

            ((ExamUser)cve.Exam).StartDateTime = DateTime.Now;      // "(ablaufende Zeit beginnt "jetzt"!)"
            App.ExamPage.BindNextPageToFrame();
        }

        private void closeButton_Click( object sender, RoutedEventArgs e ) {
            App.MainWindow.center.Content = App.MainPage;
        }

        public void sendButton_Click( object sender, RoutedEventArgs e ) {
            ViewExam cve = App.ExamPage.Cve;
            App.ServerConnection.Send( new Message( 201, "Beende eine Klausur..." ) );
            
            App.ExamPage.IsExamRunning = false;

            App.LoginBar.ExamMode( false );
            App.MenuBar.ExamMode( false );

            App.MainWindow.Topmost = false;
            App.MainWindow.ResizeMode = ResizeMode.CanResize;
            App.MainWindow.WindowState = WindowState.Normal;
            App.MainWindow.WindowStyle = WindowStyle.SingleBorderWindow;

            ExamUser eu = (ExamUser)cve.Exam;
            // Die nicht gegebenen Antworten vom "empty-wert" (null/-1) auf "minimalwert" (""/0) ändern
            foreach (Answer a in eu.AnswerList) {
                if ( a.HasEmptyAnswer() )
                    a.SetDefaultAnswer();
            }
            (eu.EndDateTime = DateTime.Now).AddMinutes(eu.ExamDuration);   // Abgabezeit bestimmen
            App.ServerConnection.Send(cve);
            sendButton.IsEnabled = false;

            try {
                File.Delete("klausur.tmp");
            } catch (Exception) {}
            
        }
    }
}
